class PetShop(object):
    def __init__(self, shop_name, pets):
        self.shop_name = shop_name
        self.pets = pets

    def add_pet(self, pet):
        self.pets.append(pet)

    def show1_pets(self):
        for pet in self.pets:
            pet.show1()

    def show2_pets(self):
        for pet in self.pets:
            pet.show2()


class Pet(object):
    def __init__(self, name, sex, age, species):
        self.name = name
        self.sex = sex
        self.age = age
        self.species = species

    def __str__(self):
        return str(self.__dict__)

    def show1(self):
        print('name is', self.name)
        print('sex is', self.sex)
        print('age is ', self.age)
        print('species is ', self.species)

    def show2(self):
        print(self.__dict__)

    @staticmethod
    def shout():
        print('pet is shouting')

    @staticmethod
    def play():
        print('pet is playing')

    @staticmethod
    def eat():
        print('pet is eating')


class PetDog(Pet):
    @staticmethod
    def shout():
        print('汪汪汪')

    @staticmethod
    def play():
        print('散步')

    @staticmethod
    def eat():
        print('骨头')


class PetCat(Pet):
    def __init__(self, name, sex, age, species, eye_color):
        super(PetCat, self).__init__(name, sex, age, species)
        self.eye_color = eye_color

    def show1(self):
        super(PetCat, self).show1()
        print('eye color is', self.eye_color)

    @staticmethod
    def shout():
        print('喵喵喵')

    @staticmethod
    def play():
        print('碎觉')

    @staticmethod
    def eat():
        print('鱼')


d1 = PetDog('d1', 0, 3, '二哈')
d2 = PetDog('d2', 1, 2.5, '金毛')
d3 = PetDog('d3', 1, 3, '牧羊犬')
c1 = PetCat('c1', 0, 2, '布偶', 'red')
pet_shop = PetShop('nFiMH\'s shop', [d1, d2, c1])
pet_shop.add_pet(d3)
# pet_shop.show1_pets()
# pet_shop.show2_pets()
